﻿
namespace AdventureWorksApp.Web
{
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.ComponentModel.DataAnnotations;
    using System.Data.Objects.DataClasses;
    using System.Linq;
    using System.ServiceModel.DomainServices.Hosting;
    using System.ServiceModel.DomainServices.Server;


    // Атрибут MetadataTypeAttribute идентифицирует EmployeeMetadata как класс,
    // который содержит дополнительные метаданные для класса Employee.
    [MetadataTypeAttribute(typeof(Employee.EmployeeMetadata))]
    public partial class Employee
    {

        // Этот класс позволяет добавлять настраиваемые атрибуты к свойствам
        // класса Employee.
        //
        // Например, далее свойство Xyz помечено как
        // обязательное и указан формат допустимых значений:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class EmployeeMetadata
        {

            // Классы метаданных не предназначены для создания экземпляров.
            private EmployeeMetadata()
            {
            }

            public DateTime BirthDate { get; set; }

            public int BusinessEntityID { get; set; }

            public bool CurrentFlag { get; set; }

            [CustomValidation(typeof(AdventureWorksApp.Web.GenderValidator), "IsGenderValid")]
            [Required]
            public string Gender { get; set; }

            public DateTime HireDate { get; set; }

            public string JobTitle { get; set; }

            public string LoginID { get; set; }

            public string MaritalStatus { get; set; }

            public DateTime ModifiedDate { get; set; }

            public string NationalIDNumber { get; set; }

            public Nullable<short> OrganizationLevel { get; set; }

            public EntityCollection<PurchaseOrderHeader> PurchaseOrderHeader { get; set; }

            public Guid rowguid { get; set; }

            public bool SalariedFlag { get; set; }

            public short SickLeaveHours { get; set; }

            [Range(0, 70)]
            public short VacationHours { get; set; }

        }
    }

    // Атрибут MetadataTypeAttribute идентифицирует PurchaseOrderDetailMetadata как класс,
    // который содержит дополнительные метаданные для класса PurchaseOrderDetail.
    [MetadataTypeAttribute(typeof(PurchaseOrderDetail.PurchaseOrderDetailMetadata))]
    public partial class PurchaseOrderDetail
    {

        // Этот класс позволяет добавлять настраиваемые атрибуты к свойствам
        // класса PurchaseOrderDetail.
        //
        // Например, далее свойство Xyz помечено как
        // обязательное и указан формат допустимых значений:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class PurchaseOrderDetailMetadata
        {

            // Классы метаданных не предназначены для создания экземпляров.
            private PurchaseOrderDetailMetadata()
            {
            }

            public DateTime DueDate { get; set; }

            public decimal LineTotal { get; set; }

            public DateTime ModifiedDate { get; set; }

            public short OrderQty { get; set; }

            public int ProductID { get; set; }

            public int PurchaseOrderDetailID { get; set; }

            public PurchaseOrderHeader PurchaseOrderHeader { get; set; }

            public int PurchaseOrderID { get; set; }

            public decimal ReceivedQty { get; set; }

            public decimal RejectedQty { get; set; }

            public decimal StockedQty { get; set; }

            public decimal UnitPrice { get; set; }
        }
    }

    // Атрибут MetadataTypeAttribute идентифицирует PurchaseOrderHeaderMetadata как класс,
    // который содержит дополнительные метаданные для класса PurchaseOrderHeader.
    [MetadataTypeAttribute(typeof(PurchaseOrderHeader.PurchaseOrderHeaderMetadata))]
    public partial class PurchaseOrderHeader
    {

        // Этот класс позволяет добавлять настраиваемые атрибуты к свойствам
        // класса PurchaseOrderHeader.
        //
        // Например, далее свойство Xyz помечено как
        // обязательное и указан формат допустимых значений:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class PurchaseOrderHeaderMetadata
        {

            // Классы метаданных не предназначены для создания экземпляров.
            private PurchaseOrderHeaderMetadata()
            {
            }

            public Employee Employee { get; set; }

            public int EmployeeID { get; set; }

            public decimal Freight { get; set; }

            public DateTime ModifiedDate { get; set; }

            public DateTime OrderDate { get; set; }

            [Include]
            [Composition]
            public EntityCollection<PurchaseOrderDetail> PurchaseOrderDetail { get; set; }

            public int PurchaseOrderID { get; set; }

            public byte RevisionNumber { get; set; }

            public Nullable<DateTime> ShipDate { get; set; }

            public int ShipMethodID { get; set; }

            public byte Status { get; set; }

            public decimal SubTotal { get; set; }

            public decimal TaxAmt { get; set; }

            public decimal TotalDue { get; set; }

            public int VendorID { get; set; }

        }
    }
}
